package code.structure.module.scene.model.data
{
	import code.structure.module.configs.data.ItemConfigData;
	
	import flash.geom.Vector3D;

	/**
	 *场景物件数据信息 
	 * @author Yuri
	 * 
	 */
	public class SceneItemData
	{
		//主键ID
		private var _id:String;
		//坐标
		private var _position3D:Vector3D;
		//类型
		private var _type:int;
		/**
		 * 物品ID
		 */
		public var itemID:int;
		//方向
		private var _direction:int = 1;
		/**
		 * 打开物品所要的能量 0 不需要消耗能量解锁
		 */
		public var energy:int;
		/**
		 * 绑定ID(种子|食谱)
		 */
		public var bind_id:int;
		/**
		 * 状态 1:刚放 2:正在扣能量 3:能量扣除完成等待最后一步中 4:完成
		 */
		public var status:int;
		/**
		 * x坐标
		 */
		public var x:int;
		/**
		 * z坐标
		 */
		public var z:int;
		/**
		 * 离成熟数据戳距离秒数
		 */
		public var endTime:int;
		//成长次数
		private var _growTimes:int;
		/**
		 * 产出物品ID
		*/
		public var output_id:int;
		/**
		 * 产出物品数量
		 */ 
		public var output_num:int;
		/**
		 * 是否系统生成
		 */
		public var systemCreat:Boolean;
		/**
		 * 绑定的墙
		 */
		public var bindWall:Array;
		/**
		 * 是否是解锁区域内的物品
		 */
		public var isUnlock:Boolean = true;
		//物品数据
		private var _data:ItemConfigData;
		/**
		 * 绑定数据(种子||食谱)
		 */
		public var bindingData:ItemConfigData;
		/**
		 * 产出数据(种子产出物||食物)
		 */
		public var outputData:ItemConfigData;
		/**
		 *建造时间<升级会更新>
		 */	
		public var build_time:int;
		
		public function SceneItemData()
		{
		}
		
		/**
		 *解析方法 
		 * @param obj
		 * @param sceneItemData
		 * @return 
		 * 
		 */
		public static function parserData(obj:Object,sceneItemData:SceneItemData=null):SceneItemData{
			if(!sceneItemData) sceneItemData = new SceneItemData();
			sceneItemData.id = obj.id;
			sceneItemData.itemID = obj.obj_id;
			sceneItemData.direction = obj.rotation_flg;
			sceneItemData.status = obj.status;
			sceneItemData.energy = obj.build_energy;
			sceneItemData.type = obj.item_type;
			sceneItemData.growTimes = obj.grow_times;
			sceneItemData.bind_id = obj.bind_id;
			sceneItemData.build_time = obj.start_time;
			if(int(obj.update_time) == -1){
				sceneItemData.endTime = -1;
				sceneItemData.bind_id  = 0;
			}
			else
				sceneItemData.endTime = obj.end_time;
			sceneItemData.position3D = new Vector3D();
			sceneItemData.output_id = obj.output_id;
			sceneItemData.output_num = obj.output_num;
			
			var _arr:Array = String(obj.map_xy).split("|");
			sceneItemData.x = int(_arr[0]);
			sceneItemData.z = int(_arr[1]);
			sceneItemData.position3D.x = 40 * sceneItemData.x;
			sceneItemData.position3D.z = 40 * sceneItemData.z;
			if(obj.bind_wall){
				sceneItemData.bindWall = JSON.parse(obj.bind_wall) as Array;
			}
			
			return sceneItemData;
		}
		/**
		 *id号 
		 */
		public function get id():String
		{
			return _id;
		}
		/**
		 * id号
		 */
		public function set id(value:String):void
		{
			_id = value;
		}
		/**
		 *坐标 
		 */
		public function get position3D():Vector3D
		{
			return _position3D;
		}
		/**
		 * @private
		 */
		public function set position3D(value:Vector3D):void
		{
			_position3D = value;
		}
		/**
		 *物品类型 
		 */
		public function get type():int
		{
			return _type;
		}

		/**
		 * @private
		 */
		public function set type(value:int):void
		{
			_type = value;
		}

		/**
		 *基本配置信息 
		 */
		public function get data():ItemConfigData
		{
			return _data;
		}

		/**
		 * @private
		 */
		public function set data(value:ItemConfigData):void
		{
			_data = value;
		}
		/**
		 *方向 
		 */
		public function get direction():int
		{
			return _direction;
		}

		/**
		 * @private
		 */
		public function set direction(value:int):void
		{
			_direction = value;
		}
		/**
		 * 成长次数
		 */
		public function get growTimes():int 
		{
			return _growTimes;
		}
		/**
		 * 成长次数
		 */
		public function set growTimes(value:int):void 
		{
			_growTimes = value;
		}
	}
}